package com.chuangxin.data.bmcx;

import com.chuangxin.data.core.Logger;
import com.chuangxin.data.core.WebPageFetcher;
import com.chuangxin.data.core.io.DataOutput;
import com.chuangxin.data.core.io.FileWriter;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

import java.io.File;
import java.util.concurrent.ConcurrentSkipListSet;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * Created by Dawnwords on 2015/2/3.
 */
public class SWGWSMFetcher extends WebPageFetcher {
    private static final String BASE = "http://swgwsm.51240.com";
    public static final String OUTPUT_PATH = "E:" + File.separator + "bmcx" + File.separator + "swgwsm";
    private static final String[] KEYWORDS = {"一", "丁", "七", "万", "丈", "三", "上", "下", "不", "丑", "专", "且", "世", "丘", "丙", "业", "丛", "东", "丝", "丢", "两", "严", "个", "中", "丰", "串", "临", "丸", "丹", "为",
            "主", "举", "乃", "久", "义", "之", "乌", "乍", "乏", "乐", "乒", "乓", "乔", "乖", "乘", "乙", "九", "也", "习", "乡", "书", "买", "乱", "乳", "了", "予", "争", "事", "二", "亏",
            "云", "互", "五", "井", "亚", "些", "亟", "亢", "交", "亥", "亦", "产", "亩", "享", "京", "亭", "亮", "亲", "人", "亿", "仁", "仅", "仆", "仇", "今", "介", "仍", "从", "仓", "他",
            "仗", "付", "仙", "仞", "仟", "代", "令", "以", "仨", "仰", "仲", "件", "价", "任", "份", "仿", "企", "伊", "伍", "伏", "伐", "休", "众", "优", "伙", "会", "伞", "传", "伤", "伪",
            "伯", "估", "伴", "伸", "似", "佃", "但", "位", "低", "住", "体", "何", "余", "佛", "作", "佟", "你", "佩", "佰", "佳", "使", "侃", "侉", "例", "供", "依", "侧", "侯", "便", "促",
            "俄", "俊", "俏", "俗", "俘", "保", "信", "俩", "修", "俯", "俱", "俺", "倍", "倒", "倔", "倘", "候", "倚", "借", "倦", "债", "值", "倾", "假", "偈", "偎", "偏", "偕", "做", "停",
            "偶", "偷", "偿", "傅", "傍", "储", "催", "傲", "傻", "像", "僧", "僵", "儿", "兀", "兄", "充", "兆", "先", "光", "克", "免", "兑", "兔", "党", "兜", "入", "全", "八", "公", "六",
            "兰", "共", "关", "兵", "其", "具", "典", "兹", "养", "兼", "兽", "冀", "内", "冈", "册", "再", "冒", "写", "军", "冠", "冤", "冬", "冯", "冰", "冲", "决", "况", "冶", "冷", "冻",
            "净", "准", "凉", "减", "凑", "凝", "几", "凡", "凤", "凫", "凭", "凳", "凶", "凸", "凹", "出", "击", "函", "凿", "刀", "刁", "刃", "分", "切", "刊", "刑", "划", "列", "刘", "则",
            "刚", "创", "初", "删", "判", "刨", "利", "别", "刮", "到", "制", "刷", "刹", "刺", "刻", "剁", "剂", "剃", "削", "前", "剐", "剑", "剔", "剖", "剜", "剥", "剧", "剩", "剪", "副",
            "割", "剿", "劁", "劈", "劐", "力", "劝", "办", "功", "加", "务", "劣", "动", "助", "努", "劫", "励", "劲", "劳", "势", "勇", "勒", "勤", "勺", "勾", "勿", "匀", "包", "化", "北",
            "匠", "匡", "匪", "匹", "区", "医", "匾", "十", "千", "卅", "升", "午", "半", "华", "卒", "卓", "单", "卖", "南", "博", "卜", "占", "卡", "卢", "卤", "卦", "卧", "卫", "卯", "印",
            "危", "即", "却", "卵", "卷", "卸", "卿", "厂", "厅", "历", "厉", "压", "厌", "厘", "厚", "原", "去", "县", "叁", "参", "又", "叉", "及", "友", "双", "反", "发", "叔", "取", "受",
            "变", "叙", "叠", "口", "古", "句", "另", "叩", "只", "叫", "召", "叭", "叮", "可", "台", "史", "右", "叶", "号", "叹", "叼", "吁", "吃", "各", "合", "吉", "吊", "同", "名", "后",
            "吐", "向", "吓", "吕", "吗", "君", "吞", "吟", "吠", "吣", "否", "吧", "吨", "含", "听", "吭", "吮", "启", "吱", "吴", "吵", "吸", "吹", "吻", "吼", "吾", "呀", "呆", "呈", "告",
            "呕", "呗", "员", "呛", "呜", "呢", "呦", "周", "呱", "味", "呵", "呸", "呼", "命", "咂", "咋", "和", "咏", "咒", "咔", "咕", "咚", "咝", "咣", "咦", "咧", "咩", "咬", "咯", "咱",
            "咳", "咸", "咽", "品", "哄", "哇", "哈", "响", "哎", "哏", "哐", "哑", "哗", "哞", "哟", "哥", "哦", "哧", "哨", "哩", "哪", "哭", "哼", "哽", "唇", "唉", "唐", "唤", "唬", "售",
            "唯", "唱", "唷", "啃", "啄", "商", "啊", "啐", "啥", "啦", "啪", "啵", "啸", "喂", "善", "喉", "喊", "喔", "喘", "喜", "喝", "喵", "喷", "嗅", "嗑", "嗒", "嗓", "嗔", "嗖", "嗡",
            "嗥", "嗨", "嗬", "嗯", "嗲", "嗳", "嗵", "嘎", "嘘", "嘛", "嘞", "嘟", "嘣", "嘬", "嘭", "嘴", "嘹", "嘻", "嘿", "噌", "噎", "噔", "噗", "噙", "噢", "器", "噫", "嚎", "嚓", "嚯",
            "嚷", "嚼", "囊", "囚", "四", "回", "因", "团", "囤", "园", "困", "围", "固", "国", "图", "圆", "圈", "土", "圣", "在", "圩", "地", "场", "均", "坎", "坏", "坐", "坑", "块", "坛",
            "坝", "坟", "坠", "坡", "坪", "坯", "垂", "垄", "型", "垒", "垢", "垧", "垫", "垮", "埃", "埋", "城", "埝", "埯", "培", "基", "堂", "堆", "堕", "堡", "堤", "堰", "堵", "塌", "塑",
            "塔", "塘", "塞", "填", "塬", "境", "墓", "墙", "增", "墨", "墩", "壁", "壕", "士", "壬", "壮", "声", "壳", "壶", "壹", "处", "备", "复", "夏", "夕", "外", "多", "夜", "够", "大",
            "天", "太", "夫", "夯", "失", "头", "夸", "夹", "夺", "奇", "奉", "奏", "奔", "奕", "奖", "套", "奚", "奥", "女", "奴", "奶", "奸", "她", "好", "如", "妄", "妇", "妈", "妓", "妖",
            "妙", "妞", "妥", "妹", "妻", "妾", "始", "姐", "姑", "姓", "委", "姚", "姜", "姨", "威", "娃", "娇", "娘", "娶", "娼", "婚", "媚", "嫁", "嫂", "嫌", "嫖", "嫩", "子", "孔", "孕",
            "字", "存", "孙", "孝", "孟", "季", "孤", "学", "孬", "孵", "宁", "它", "宅", "宇", "守", "安", "宋", "完", "宗", "官", "定", "宛", "宜", "宝", "实", "宠", "审", "客", "宣", "室",
            "宫", "宰", "害", "宴", "家", "容", "宽", "宿", "寄", "寅", "密", "寇", "富", "寒", "寓", "察", "寡", "寨", "寸", "对", "寺", "寻", "导", "寿", "封", "射", "将", "尉", "尊", "小",
            "尖", "尚", "尝", "尤", "就", "尸", "尺", "尽", "尾", "尿", "局", "屁", "层", "居", "屈", "屉", "届", "屋", "屎", "屏", "展", "屙", "属", "屠", "屡", "屯", "山", "岁", "岂", "岔",
            "岗", "岛", "岩", "岭", "岳", "岸", "峡", "峰", "崇", "崔", "崖", "崩", "嵌", "巅", "川", "州", "巡", "巢", "工", "左", "巧", "巨", "巩", "巫", "差", "己", "已", "巳", "巴", "巷",
            "币", "市", "布", "帅", "帆", "师", "帐", "帕", "帖", "帝", "带", "帧", "席", "帮", "常", "帽", "幂", "幅", "幕", "幡", "幢", "干", "平", "年", "并", "幸", "幺", "幼", "广", "庄",
            "庆", "床", "序", "库", "应", "底", "店", "庙", "庚", "府", "庞", "废", "度", "座", "庭", "庵", "康", "廉", "廊", "延", "建", "廿", "开", "异", "弃", "弄", "弊", "式", "弓", "引",
            "弟", "张", "弦", "弧", "弯", "弱", "弹", "强", "归", "当", "录", "形", "彩", "彭", "影", "役", "彼", "往", "征", "径", "待", "很", "律", "徐", "徒", "得", "循", "微", "德", "徽",
            "心", "必", "忆", "忌", "忍", "志", "忘", "忙", "忠", "忧", "快", "念", "忽", "怀", "态", "怄", "怎", "怒", "怔", "怕", "思", "急", "性", "怨", "怪", "怯", "怵", "总", "恋", "恐",
            "恕", "恨", "恩", "息", "恰", "恶", "恼", "悉", "悔", "悟", "患", "您", "悬", "悲", "情", "惊", "惠", "惦", "惧", "惨", "惯", "想", "惹", "愁", "愈", "意", "愚", "感", "愣", "愧",
            "愿", "慌", "慕", "慢", "憋", "憎", "憨", "懂", "懒", "戌", "戎", "戏", "成", "我", "戒", "或", "戗", "战", "戚", "截", "戳", "戴", "户", "房", "所", "扁", "扇", "手", "才", "扎",
            "扑", "扒", "打", "扔", "托", "扛", "扣", "执", "扩", "扫", "扬", "扭", "扮", "扯", "扰", "扳", "扶", "批", "扼", "扽", "找", "承", "抄", "把", "抒", "抓", "投", "抖", "抗", "折",
            "抛", "抠", "抡", "抢", "护", "报", "披", "抬", "抱", "抵", "抹", "抻", "押", "抽", "抿", "拂", "拄", "担", "拆", "拈", "拉", "拌", "拍", "拎", "拐", "拒", "拓", "拔", "拖", "拗",
            "拘", "拙", "招", "拜", "拟", "拢", "拣", "拥", "拦", "拧", "拨", "择", "括", "拱", "拳", "拴", "拷", "拼", "拽", "拾", "拿", "持", "挂", "指", "按", "挎", "挑", "挖", "挟", "挠",
            "挡", "挣", "挤", "挥", "挨", "挪", "挫", "振", "挺", "挽", "捂", "捅", "捆", "捉", "捋", "捌", "捎", "捏", "捐", "捕", "捞", "损", "捡", "换", "捣", "捧", "据", "捯", "捶", "捺",
            "捻", "掀", "掂", "授", "掉", "掌", "掏", "掐", "排", "掖", "掘", "掠", "探", "掣", "接", "控", "推", "掩", "掬", "掰", "掴", "掷", "掸", "掺", "掼", "揉", "揍", "描", "提", "插",
            "揖", "握", "揣", "揩", "揪", "揭", "揽", "搀", "搁", "搂", "搅", "搌", "搏", "搓", "搔", "搜", "搞", "搡", "搪", "搬", "搭", "携", "搽", "摁", "摄", "摆", "摇", "摊", "摔", "摘",
            "摞", "摸", "摽", "撂", "撅", "撇", "撑", "撒", "撕", "撞", "撤", "撩", "撬", "播", "撮", "撰", "撵", "撸", "撼", "擀", "擂", "擅", "操", "擎", "擒", "擤", "擦", "攀", "攉", "攒",
            "攥", "攮", "支", "收", "改", "攻", "放", "政", "故", "敌", "敏", "救", "敖", "教", "敛", "敞", "敢", "散", "敬", "数", "敲", "整", "敷", "文", "斋", "斑", "斗", "料", "斜", "斟",
            "斤", "斩", "断", "新", "方", "施", "旁", "旅", "旋", "族", "旗", "无", "既", "日", "旦", "旧", "旨", "早", "旬", "旱", "时", "旷", "旺", "昂", "昆", "昌", "明", "昏", "易", "星",
            "映", "春", "是", "昼", "显", "晃", "晋", "晌", "晒", "晓", "晕", "晚", "晨", "普", "景", "晴", "智", "晾", "暂", "暖", "暗", "暴", "曰", "曲", "更", "曹", "曾", "替", "最", "月",
            "有", "服", "望", "朝", "期", "木", "未", "末", "本", "术", "朱", "朵", "机", "朽", "杀", "杂", "权", "杆", "杈", "李", "杏", "材", "村", "杜", "束", "杠", "条", "来", "杨", "杭",
            "杯", "松", "板", "极", "构", "枉", "枕", "林", "枚", "果", "枝", "枣", "枪", "枫", "枯", "架", "枷", "柄", "柏", "某", "柑", "柒", "染", "柔", "柜", "查", "柯", "柱", "柳", "柴",
            "标", "栋", "栏", "树", "栓", "栗", "校", "株", "样", "核", "根", "格", "栽", "桂", "桃", "框", "案", "桌", "桑", "档", "桥", "桨", "桩", "桶", "梁", "梅", "梗", "梢", "梦", "梨",
            "梳", "检", "棉", "棋", "棍", "棒", "棚", "棱", "棵", "植", "楚", "楷", "楼", "概", "榆", "榜", "榨", "槌", "槐", "槽", "樊", "模", "横", "橘", "橙", "橱", "橹", "檐", "欠", "次",
            "欢", "欣", "欧", "欲", "欺", "款", "歇", "歌", "止", "正", "此", "步", "武", "歪", "死", "歼", "殊", "残", "段", "殷", "殿", "毁", "毋", "母", "每", "毒", "比", "毕", "毙", "毛",
            "毫", "氏", "民", "气", "氖", "氟", "氡", "氢", "氦", "氧", "氨", "氩", "氮", "氯", "水", "永", "氽", "汁", "求", "汇", "汉", "汗", "汛", "汝", "汞", "江", "池", "汤", "汪", "汲",
            "汽", "沁", "沈", "沉", "沏", "沓", "沙", "沟", "没", "沤", "沪", "沫", "河", "沸", "油", "治", "沽", "沾", "沿", "泄", "泅", "泉", "泊", "泓", "法", "泛", "泡", "波", "泥", "注",
            "泪", "泰", "泵", "泻", "泼", "洁", "洋", "洒", "洗", "洞", "津", "洪", "洲", "活", "洼", "派", "流", "浅", "浇", "浊", "测", "济", "浑", "浓", "浙", "浦", "浪", "浮", "海", "浸",
            "涂", "消", "涉", "涌", "涝", "润", "涨", "涩", "涮", "淋", "淌", "淘", "淡", "淤", "淫", "深", "混", "淹", "添", "清", "渊", "渔", "渗", "渝", "渠", "渡", "渣", "温", "港", "渴",
            "游", "湖", "湘", "湾", "湿", "溅", "源", "溜", "溢", "溪", "溶", "溺", "滇", "滑", "滕", "滗", "滚", "满", "滤", "滥", "滨", "滩", "滴", "漂", "漆", "漉", "漏", "演", "漫", "漱",
            "漾", "潘", "潜", "潭", "潮", "澄", "澡", "澳", "激", "灌", "火", "灭", "灯", "灰", "灵", "灶", "灸", "灾", "炉", "炎", "炒", "炕", "炖", "炝", "炭", "炮", "炷", "炸", "点", "炼",
            "烂", "烈", "烘", "烙", "烛", "烟", "烤", "烦", "烧", "烩", "烫", "热", "烹", "焊", "焐", "焖", "焗", "焙", "焚", "焦", "然", "煅", "煎", "煞", "煤", "照", "煨", "煮", "煲", "煳",
            "煸", "煺", "煽", "熄", "熊", "熏", "熔", "熘", "熟", "熨", "熬", "燃", "燎", "燕", "爆", "爪", "爬", "爱", "父", "爷", "爸", "爹", "爽", "片", "版", "牌", "牙", "牛", "牟", "牢",
            "牧", "物", "牵", "特", "犁", "犊", "犋", "犟", "犬", "犯", "状", "犹", "狂", "狄", "狐", "狗", "狠", "独", "狭", "狱", "狼", "猛", "猜", "猪", "猫", "献", "猴", "猿", "獒", "獾",
            "玄", "玉", "王", "玖", "玩", "环", "现", "珠", "班", "球", "理", "琴", "琼", "瓜", "瓢", "瓤", "瓦", "瓮", "瓶", "瓷", "甄", "甘", "甚", "甜", "生", "用", "甩", "甭", "田", "由",
            "甲", "申", "电", "男", "画", "畅", "界", "畏", "留", "畜", "略", "畦", "番", "疃", "疆", "疏", "疑", "疔", "疤", "疥", "疮", "疯", "疱", "疼", "疽", "疾", "痂", "病", "症", "痈",
            "痒", "痘", "痛", "痞", "痣", "痧", "痰", "痴", "瘤", "瘦", "瘪", "瘫", "瘸", "瘾", "癌", "癍", "癣", "癸", "登", "白", "百", "的", "皆", "皇", "皖", "皮", "皱", "皴", "盅", "盆",
            "盈", "益", "盏", "盐", "监", "盒", "盔", "盖", "盗", "盘", "盛", "盟", "目", "盯", "直", "相", "盼", "盾", "省", "眉", "看", "眍", "真", "眨", "眯", "眼", "着", "睁", "睛", "睡",
            "睬", "睹", "瞄", "瞅", "瞎", "瞒", "瞟", "瞥", "瞧", "瞪", "瞻", "矛", "知", "矫", "矬", "短", "矮", "石", "矾", "矿", "码", "砂", "砌", "砍", "研", "砖", "砘", "砚", "砰", "破",
            "砸", "硅", "硌", "硒", "硝", "硫", "硬", "确", "硼", "碇", "碍", "碎", "碑", "碓", "碗", "碘", "碟", "碧", "碰", "碱", "碳", "碴", "碾", "磁", "磅", "磕", "磨", "磷", "礅", "礼",
            "社", "祁", "祖", "祝", "神", "祥", "票", "祭", "祸", "禁", "禅", "福", "离", "禽", "禾", "秀", "私", "秃", "秋", "种", "科", "秒", "秘", "租", "秤", "秦", "秧", "积", "称", "移",
            "稀", "程", "稍", "税", "稠", "稳", "稻", "稿", "穆", "穗", "穴", "穷", "空", "穿", "突", "窃", "窄", "窑", "窖", "窗", "窘", "窜", "窝", "窟", "立", "竖", "站", "竞", "竟", "章",
            "童", "端", "竹", "笋", "笑", "笔", "笙", "笛", "符", "笨", "笼", "等", "筋", "筐", "筑", "筒", "答", "策", "筛", "筹", "签", "简", "箍", "算", "管", "箩", "箫", "箭", "箱", "篇",
            "篓", "篦", "篮", "篷", "簇", "簸", "米", "籴", "类", "粉", "粒", "粗", "粘", "粟", "粤", "粥", "粪", "粮", "精", "糊", "糕", "糖", "糙", "糜", "糟", "糠", "系", "素", "索", "紧",
            "紫", "累", "絮", "繁", "纠", "红", "纤", "约", "级", "纯", "纱", "纲", "纳", "纵", "纸", "纹", "纺", "纽", "线", "练", "组", "细", "织", "终", "绊", "经", "绑", "绒", "结", "绕",
            "绗", "绘", "给", "络", "绝", "绞", "统", "绢", "绣", "绪", "续", "绱", "绲", "绳", "维", "绷", "绸", "绺", "绾", "绿", "缄", "缓", "缕", "编", "缘", "缚", "缝", "缠", "缩", "缫",
            "缴", "缸", "缺", "罐", "网", "罗", "罚", "罢", "罩", "罪", "置", "署", "羊", "美", "羞", "群", "羽", "翁", "翅", "翘", "翻", "翼", "耀", "老", "考", "者", "而", "耍", "耐", "耕",
            "耗", "耙", "耧", "耪", "耳", "耸", "耿", "聂", "聊", "聋", "联", "聘", "聚", "肆", "肉", "肋", "肖", "肘", "肚", "肛", "肝", "肠", "股", "肤", "肥", "肩", "肯", "育", "肺", "肾",
            "肿", "胀", "胃", "胆", "背", "胎", "胖", "胜", "胡", "胯", "胰", "胶", "胸", "能", "脆", "脉", "脏", "脑", "脓", "脚", "脱", "脸", "脾", "腊", "腋", "腌", "腐", "腔", "腕", "腥",
            "腭", "腮", "腰", "腱", "腹", "腺", "腻", "腾", "腿", "膀", "膈", "膏", "膘", "膜", "膝", "膻", "臀", "臂", "臊", "臣", "臧", "自", "臭", "至", "致", "臼", "舀", "舂", "舅", "舌",
            "舍", "舒", "舔", "舞", "舟", "航", "般", "舰", "舱", "舵", "舷", "船", "艇", "艘", "良", "色", "艳", "艺", "艾", "节", "芦", "芯", "花", "芽", "苏", "苑", "苗", "苞", "若", "苦",
            "苫", "英", "范", "茅", "茎", "茧", "茬", "茶", "茹", "荆", "草", "荒", "荚", "荡", "荣", "荤", "药", "荷", "荻", "莫", "莲", "获", "菊", "菌", "菜", "菱", "萍", "萤", "营", "萧",
            "落", "著", "葛", "董", "葬", "葱", "蒂", "蒋", "蒙", "蒜", "蒲", "蒸", "蒿", "蓄", "蓝", "蓬", "蔡", "蔫", "蔽", "薄", "薅", "薛", "薪", "薰", "藏", "藕", "藤", "蘸", "虎", "虚",
            "虞", "虫", "虹", "虽", "虾", "蚀", "蚁", "蚌", "蚕", "蚝", "蛀", "蛆", "蛇", "蛋", "蛙", "蛮", "蛹", "蜀", "蜂", "蜇", "蜜", "蜡", "蝇", "蝉", "融", "螯", "螺", "蟒", "蟹", "蠹",
            "血", "行", "衔", "街", "衣", "补", "表", "衫", "衬", "袁", "袄", "袋", "袖", "被", "袭", "袱", "裁", "裂", "装", "裆", "裤", "裱", "裸", "裹", "褐", "褪", "襟", "西", "要", "覃",
            "覆", "见", "观", "规", "觅", "视", "觉", "角", "解", "触", "言", "詹", "誊", "誓", "警", "计", "订", "认", "讨", "让", "训", "议", "讯", "记", "讲", "讳", "许", "讹", "论", "设",
            "访", "评", "识", "诈", "诉", "诌", "词", "译", "诓", "试", "诗", "诚", "诛", "话", "该", "详", "语", "误", "诳", "说", "请", "诸", "读", "课", "谁", "调", "谅", "谈", "谋", "谎",
            "谓", "谜", "谢", "谣", "谨", "谭", "谱", "谷", "豁", "豆", "象", "豫", "貂", "貉", "贝", "负", "贡", "财", "责", "贤", "败", "账", "货", "质", "贩", "贪", "贫", "贬", "购", "贯",
            "贰", "贱", "贴", "贵", "贷", "费", "贺", "贼", "贾", "赁", "资", "赊", "赋", "赌", "赎", "赏", "赐", "赔", "赖", "赚", "赛", "赞", "赠", "赢", "赣", "赤", "赫", "走", "赴", "赵",
            "赶", "起", "趁", "超", "越", "趋", "趟", "趣", "足", "趴", "趸", "跃", "跋", "跌", "跑", "跛", "距", "跟", "跤", "跨", "跪", "路", "跳", "跷", "跺", "踏", "踝", "踢", "踩", "踮",
            "踱", "踹", "蹄", "蹈", "蹑", "蹦", "蹬", "蹭", "蹲", "蹼", "蹿", "身", "躬", "躲", "躺", "车", "轧", "轨", "转", "轮", "软", "轰", "轴", "轻", "载", "轿", "较", "辅", "辆", "辈",
            "辍", "辑", "输", "辕", "辖", "辙", "辛", "辞", "辣", "辨", "辩", "辰", "边", "辽", "达", "迁", "迂", "过", "迈", "迎", "运", "近", "返", "还", "这", "进", "远", "违", "连", "迟",
            "迫", "迭", "述", "迷", "迸", "追", "退", "送", "逃", "逆", "选", "逊", "透", "逐", "递", "逗", "通", "逛", "逞", "速", "造", "逢", "逮", "逼", "逾", "遂", "遇", "遍", "遏", "道",
            "遗", "遛", "遭", "遮", "避", "邀", "邓", "邢", "那", "邪", "邮", "邵", "邻", "郁", "郊", "郎", "郑", "部", "郭", "都", "鄂", "酉", "酊", "配", "酒", "酣", "酥", "酱", "酶", "酷",
            "酸", "酽", "酿", "醇", "醉", "醋", "醒", "醭", "采", "釉", "释", "里", "重", "野", "量", "金", "针", "钉", "钓", "钙", "钛", "钝", "钞", "钟", "钠", "钡", "钢", "钨", "钩", "钮",
            "钱", "钳", "钵", "钹", "钻", "钾", "铀", "铁", "铃", "铅", "铆", "铐", "铙", "铛", "铜", "铝", "铡", "铭", "铰", "铱", "铲", "银", "铸", "铺", "链", "销", "锁", "锄", "锅", "锈",
            "锉", "锌", "锑", "锔", "错", "锚", "锛", "锡", "锣", "锤", "锨", "锭", "键", "锯", "锰", "锹", "锻", "镀", "镁", "镇", "镍", "镐", "镑", "镜", "镣", "镫", "镭", "镰", "镶", "长",
            "门", "闩", "闪", "闭", "问", "闯", "闰", "闲", "间", "闷", "闸", "闹", "闻", "闽", "阀", "阅", "阉", "阎", "阔", "队", "防", "阳", "阴", "阵", "阶", "阿", "附", "陆", "陇", "陈",
            "降", "限", "陕", "陡", "院", "除", "险", "陪", "陵", "陶", "陷", "隆", "隋", "随", "隐", "隔", "难", "雀", "雁", "雄", "雅", "集", "雇", "雌", "雕", "雨", "雪", "零", "雷", "雾",
            "需", "震", "霉", "霍", "霎", "霜", "霞", "露", "霸", "青", "靓", "静", "非", "靠", "面", "革", "靴", "靶", "鞋", "鞘", "鞠", "鞣", "鞭", "韦", "韩", "音", "韵", "页", "顶", "顷",
            "项", "顺", "须", "顾", "顿", "颂", "领", "颇", "颈", "颊", "颗", "题", "颜", "额", "颠", "颤", "风", "飕", "飘", "飞", "食", "餐", "饥", "饭", "饮", "饰", "饱", "饶", "饷", "饼",
            "饿", "馅", "馆", "馊", "馋", "馍", "馏", "馕", "首", "香", "马", "驮", "驱", "驳", "驴", "驶", "驹", "驻", "驾", "骂", "骆", "验", "骑", "骗", "骚", "骟", "骡", "骨", "高", "鬼",
            "魂", "魏", "魔", "鱼", "鲁", "鲍", "鲜", "鲸", "鳃", "鳄", "鳍", "鳔", "鳖", "鳞", "鸟", "鸠", "鸡", "鸢", "鸣", "鸭", "鸽", "鹅", "鹤", "鹫", "鹰", "鹳", "鹿", "麝", "麦", "麻",
            "黄", "黎", "黏", "黑", "黔", "默", "鼎", "鼓", "鼠", "鼻", "鼾", "齐", "齿", "龙", "龚", "龟"};
    private ExecutorService putURLTP = Executors.newCachedThreadPool();
    private ConcurrentSkipListSet<String> existTitle = new ConcurrentSkipListSet<String>();

    public SWGWSMFetcher(DataOutput output) {
        super(1000, 1, 0, output);
    }

    @Override
    public void execute() {
        super.execute();
        new URLGenerator().start();
    }

    @Override
    protected TitleContent processDoc(Document doc, String url) {
        Elements wrapper = doc.select("div#main_content");
        String title = wrapper.select("h2").eq(0).html();
        String content = wrapper.select("div.neirong").eq(0).html();
        Elements as = wrapper.select("div.xiaoshuomingkuang_neirong a");
        for (int i = 0; i < as.size(); i++) {
            putA(as.eq(i));
        }
        return new TitleContent(title, content);
    }

    protected void putA(Elements a) {
        String path = OUTPUT_PATH + File.separator + a.html();
        final String nextURL = BASE + a.attr("href");
        if (!existTitle.contains(nextURL) && !new File(path).exists()) {
            existTitle.add(nextURL);
            putURLTP.execute(new Runnable() {
                @Override
                public void run() {
                    SWGWSMFetcher.super.putURL(nextURL);
                }
            });
        }
    }

    private class URLGenerator extends Thread {
        private static final String SEARCH_TEMPLATE = "http://swgwsm.51240.com/${keyword}__swgwsm/";

        @Override
        public void run() {
            for (String keyword : KEYWORDS) {
                try {
                    Document doc = Jsoup.connect(SEARCH_TEMPLATE.replace("${keyword}", keyword)).get();
                    Elements as = doc.select("div#main_content > ul.list a");
                    for (int i = 0; i < as.size(); i++) {
                        System.out.println(keyword + "\t" + as.eq(i).html());
                        putA(as.eq(i));
                    }
                } catch (Exception e) {
                    Logger.fail(e.getMessage(), keyword);
                }
            }
            putURL(null);
        }
    }

    public static void main(String[] args) {
        new SWGWSMFetcher(new FileWriter(OUTPUT_PATH)).execute();
    }
}
